package com.livew.framework.sql;

import com.livew.framework.utils.XTStringUtils;

/**
 * like查询
 * 
 * 
 * @author Jianhua Xu
 * 2016年3月11日
 *
 */
public class LikeParam extends AParam{
	
	private static final long serialVersionUID = 1L;

	/**
	 * Like查询参数，分隔符  "%" "_"
	 * 
	 * 
	 * @author Jianhua Xu
	 * 2016年3月11日
	 *
	 */
	public enum Separator{
		/**
		 * 单字节模糊查询标识符
		 */
		Singleton_Charater("_"),
		/**
		 * 多字节模糊查询标识符，底层只涉及"%"，不提供单字节的模糊匹配方法
		 */
		Multi_Charaters("%"),
		
		/**
		 * 单引号
		 */
		Single_Quotation("'"),

		/**
		 * 双引号
		 */
		Double_Quotation("\""),

		/**
		 * 空格
		 */
		Space_Charater(" ");
		
		private String value;//if null,throws IllegalArgumentException
		
		private Separator(String value){
			this.value = value;
		}
		public String getValue() {
			return value;
		}
	}
	
	
	/**
	 * LikeParam的模糊匹配模式
	 * 
	 * 
	 * @author Jianhua Xu
	 * 2016年3月11日
	 *
	 */
	public enum MatchModul{
		right,left,middle
	}
	
	private String matchModul = MatchModul.middle.toString();//设模糊匹配模式,默认为%xxx%
	
	private String value;

	public String getValue() {
		if(XTStringUtils.isBlank(this.value)){
			return null;
		}
		String newValue = XTSqlUtils.replaceSeparator(this.value);
		if(MatchModul.right.toString().equals(this.matchModul)){
			newValue = newValue+Separator.Multi_Charaters.getValue();
		}
		if(MatchModul.left.toString().equals(this.matchModul)){
			newValue = Separator.Multi_Charaters.getValue()+newValue;
		}
		if(MatchModul.middle.toString().equals(this.matchModul)){
			newValue = Separator.Multi_Charaters.getValue()+newValue+Separator.Multi_Charaters.getValue();
		}
		return newValue;
	}

	public void setValue(String value) {
		this.value = value;
	}

	public String getMatchModul() {
		return matchModul;
	}

	public void setMatchModul(String matchModul) {
		this.matchModul = matchModul;
	}
}
